package com.changanw.code11;

/**
 * @author changanw
 * @version ncc1.0
 * @description 第11题，盛水最多的容器问题，
 * @date 2023/6/27 22:47
 */
public class Code11 {
  public int maxArea(int[] height) {
    int l = 0;
    int r = height.length - 1;
    int ans = 0;
    //该面积的计算就是Math.min(height[l],height[r]) * (r-l);
    //所以采用双指针方法，前后同时取值，然后判断哪个指针的值小的话，左指针右移动（增大）、右指针左移动（减小）
    while (l < r){
      int area = Math.min(height[l],height[r]) * (r-l);
      ans = Math.max(area,ans);
      if (height[l] < height[r]){
        ++l;
      }else {
        --r;
      }
    }
    return ans;
  }
  //双层for循环，但是时间超了
  public int maxArea1(int[] height) {
    int ans = 0;
    for (int i = 0; i < height.length; i++) {
      for (int j = 0; j < height.length; j++) {
        int h = Math.min(height[i],height[j]);
        int w = Math.abs(i - j);
        int area = h * w;
        ans = Math.max(ans,area);
      }
    }
    return ans;
  }

  public static void main(String[] args) {
    Code11 code11 = new Code11();
    int i = code11.maxArea1(new int[]{1, 8, 6, 2, 5, 4, 8, 3, 7});
    System.out.println(i);
  }
}
